--[[
方框找节点函数
功能：通过节点的方框位置查找节点并可选择性地点击
参数：
  节点信息 - 节点信息或节点名称
  isClick - 布尔值，是否点击找到的节点
返回值：
  布尔值，表示是否找到节点
--]]

local 点击坐标 = require("basic_operations.点击坐标")

function 方框找节点(节点信息, isClick)
    -- 检查节点信息是否为nil
    if 节点信息 == nil then
        print("错误: 节点信息为空")
        return false
    end
    
    -- 检查是否需要分辨率适配
    local 使用适配节点 = false
    local 原始节点名 = nil
    
    -- 如果是使用节点名而非直接节点信息，尝试进行分辨率适配
    if node_config and node_config.获取适配节点 and type(节点信息) == "string" then
        原始节点名 = 节点信息
        节点信息 = node_config.获取适配节点(节点信息)
        使用适配节点 = true
        
        -- 检查是否有分辨率特定调整
        if node_config.当前分辨率 and node_config.分辨率特定调整 and 
           node_config.分辨率特定调整[node_config.当前分辨率.宽度] and
           node_config.分辨率特定调整[node_config.当前分辨率.宽度][原始节点名] then
            -- 使用分辨率特定的节点定义
            节点信息 = node_config.分辨率特定调整[node_config.当前分辨率.宽度][原始节点名]
            print("使用" .. node_config.当前分辨率.宽度 .. "分辨率特定的节点定义: " .. 原始节点名)
        end
    end
    
    local ret = nil
    local success, result = pcall(function()
        -- 如果是数组格式，取第5个元素
        if type(节点信息) == "table" and 节点信息[5] then
            return nodeLib.findOne(节点信息[5])
        else
            -- 如果不是数组格式，直接使用
            return nodeLib.findOne(节点信息)
        end
    end)
    
    if not success then
        print("查找节点时出错: " .. tostring(result))
        return false
    end
    
    ret = result
    
    if ret then
        print("找到节点！位置：")
        print("左："..ret.bounds.l.." 上："..ret.bounds.t)
        print("右："..ret.bounds.r.." 下："..ret.bounds.b)
        if isClick then
            local x = (ret.bounds.l + ret.bounds.r)/2
            local y = (ret.bounds.t + ret.bounds.b)/2
            print("点击位置：x="..x..", y="..y)
            点击坐标(x, y, 10)
            sleep(10)
        end
        return true
    end
    print("未找到节点")
    return false
end

return 方框找节点 